wayland: Only try and process pointer events when focussed
authorRob Bradford <rob@linux.intel.com>
Sun, 4 Aug 2013 13:01:10 +0000 (14:01 +0100)
committerRob Bradford <rob@linux.intel.com>
Sun, 4 Aug 2013 13:42:14 +0000 (14:42 +0100)
When combining Clutter with GTK+ we can receive events for surfaces which in
the client side we do not have focussed.

gdk/wayland/gdkdevice-wayland.c

index 7624fa1b46e88d959ff7033dd5c3ec366ac8683a..862942cae75882604fdea1d7a837bf6fabd253eb 100644 (file)
@@ -645,6 +645,8 @@ pointer_handle_leave (void              *data,
     return;
   if (!GDK_IS_WINDOW (wl_surface_get_user_data (surface)))
     return;
+  if (!device->pointer_focus)
+    return;
 
   _gdk_wayland_display_update_serial (wayland_display, serial);
 
@@ -689,6 +691,9 @@ pointer_handle_motion (void              *data,
   GdkWaylandDisplay *display = GDK_WAYLAND_DISPLAY (device->display);
   GdkEvent *event;
 
+  if (!device->pointer_focus)
+    return;
+
   event = gdk_event_new (GDK_NOTHING);
 
   device->time = time;
@@ -729,6 +734,9 @@ pointer_handle_button (void              *data,
   GdkWaylandDisplay *wayland_display =
     GDK_WAYLAND_DISPLAY (device->display);
 
+  if (!device->pointer_focus)
+    return;
+
   _gdk_wayland_display_update_serial (wayland_display, serial);
 
   switch (button) {
@@ -784,6 +792,9 @@ pointer_handle_axis (void              *data,
   GdkEvent *event;
   gdouble delta_x, delta_y;
 
+  if (!device->pointer_focus)
+    return;
+
   /* get the delta and convert it into the expected range */
   switch (axis) {
   case WL_POINTER_AXIS_VERTICAL_SCROLL: